1. Field of Invention
The present invention relates generally to mass digital data storage systems. More particularly, the present invention relates to systems and methods for enabling defective or unusable physical blocks to be managed such that defective blocks with growing defects may possibly be reclaimed when spare blocks are needed.
2. Description of the Related Art
The use of non-volatile memory systems such as flash memory storage systems is increasing due to the compact physical size of such memory systems, and the ability for non-volatile memory to be repetitively reprogrammed. The compact physical size of flash memory storage systems facilitates the use of such storage systems in devices which are becoming increasingly prevalent. Devices which use flash memory storage systems include, but are not limited to, digital cameras, digital camcorders, digital music players, handheld personal computers, and global positioning devices. The ability to repetitively reprogram non-volatile memory included in flash memory storage systems enables flash memory storage systems to be used and reused.
In general, flash memory storage systems may include flash memory cards and flash memory chip sets. Flash memory chip sets generally include flash memory components and a controller components. Typically, a flash memory chip set may be arranged to be assembled into an embedded system. The manufacturers of such assemblies or host systems typically acquire flash memory in component-form, as well as other components, then assemble the flash memory and the other components into a host system.
When a flash memory is manufactured, manufacturing or factory defects are typically identified by the manufacturer of the flash memory. In general, as long as a flash memory includes less than a certain number or a certain percentage of defective or unusable physical blocks, the flash memory may be sold, e.g., to a manufacturer of a flash memory card. The defective blocks may, for example, fail to hold electrical charges and fail stress tests applied by the manufacturer of the flash memory. When factory defects are identified, the manufacturer of the flash memory may effectively mark blocks which include factory defects as being defective.
Defective blocks in a flash memory which include factory defects may be identified using a scanning process when power is applied to the flash memory. In general, a scanning process also identifies defective blocks which include growing defects, or blocks which were once usable but have become unusable. While a scanning process identifies defective blocks, a scanning process generally does not differentiate between defective blocks with factory defects and defective blocks with growing defects. The identification of defective blocks is important to ensure the integrity of an overall flash memory system by preventing defective blocks from being used. By way of example, when a defective block which is not capable of holding data is used to store data, the data may be lost.
Typically, upon the application of power to the flash memory, a temporary or volatile list of the defective blocks may be created once the defective blocks are identified by a scanning process. With reference to FIG. 1, the steps associated with one conventional method of compiling a list of defective blocks within a memory system will be described. A process 200 of compiling a list of defective, or unusable, blocks begins at step 204 in which power is provided to the memory system. Once the memory system is powered up, substantially all blocks, i.e., physical blocks in a non-volatile memory of the memory system, are scanned in step 208 order to identify defective blocks. Typically, when a system is first powered up to be formatted, defective blocks include only blocks with factory defects, or defects which were first identified during a manufacturing process associated with the non-volatile memory. Upon subsequent power up processes, defective blocks may include both blocks with factory defects and blocks with growing defects, or defects which arise during the course of the memory system being used.
After defective blocks are identified, a list of the defective blocks may be created in a buffer in step 212. Often, the list is created in a volatile buffer associated with the memory system such that when power is removed from the memory system, the list is lost. Also, the list of defective blocks generally does not differentiate between blocks which are defective due to factory defects and blocks which are defective due to growing defects. Instead, the blocks in the list are only identified as generally being unusable.
In step 216, the defective or unusable blocks are prevented from being used. Preventing the defective blocks from being used may include making sure that blocks in the list of defective blocks are not accessed for use as spare blocks. As such, blocks which are not included in the list are used in step 220 for use in storing data or information. Occasionally, a block which is not included in the list of defective blocks may not be successfully read from, successfully written to, or successfully erased. In other words, a block which is not included in the list of defective blocks may be defective, as for example due to a growing defect which has arisen. Hence, from step 220, process flow proceeds to step 224 in which it is determined if the block which is not included in the list of defective blocks is, in fact, defective.
If it is determined in step 224 that the block is not defective, the process flow returns to step 220 in which blocks which are not included in the list continue to be used. Alternatively, if it is determined in step 224 that the block which is not included in the list is defective, then the block is added in step 228 to the list of defective blocks. Once the block is added to the list of defective blocks, process flow returns to step 220 in which blocks which are not included in the list of defective blocks are used.
Although the creation of a list of defective blocks is generally effective in preventing the defective blocks from being used, often, at least some of the blocks identified in the list may actually be usable. Specifically, at least some of the defective blocks which include growing defects may actually pass a testing process with a rigorous pattern, i.e., at least some of the defective blocks may actually be proven to be usable. In some cases, a block which appears to be defective in some “extreme” or rare environments may actually not be defective in the “normal” or more common environments. As a result, blocks which are actually usable may not be used, and the memory system may operate less efficiently as a result of an inability to use substantially all blocks which are usable. For example, if a NAND flash memory is subjected to an environment of approximately 90 degrees Celsius, which is generally out of the specification range of most flash memories, many growing defects are typically detected. Many of these unusable growing defects which are detected in the environment which is out of the specification range may be usable when the memory is brought back to a more normal temperature that is, for instance, within the range stated in the memory specification.
At times, during the course of using a memory system which includes a flash memory component, it may be determined that the memory system does not have enough spare blocks available for use in storing data. When there are not enough spare blocks available for use in storing data, it may be necessary for a user to obtain additional flash memory components for use in storing data. Obtaining additional flash memory components for use with the memory system may be time-consuming, as well as relatively expensive. When there may be usable blocks which have been characterized as being unusable, it may be particularly inefficient to compensate for a lack of available spare blocks within the memory system, as some potentially usable blocks are effectively being wasted.
Therefore, what is needed is a method and an apparatus which enables potentially usable blocks which are identified as defective blocks to be used as spare blocks. That is, what is desired is a method and an apparatus for “recycling” or reclaiming blocks which are characterized as being defective due to growing defects when such block are actually usable.